<<<<<<< HEAD Recursos Humanos - Quem está deixando a empresa?

por Lieby Cardoso

Este conjunto de dados foi simulado e disponibilizado por Ludovic Benistant para o site Kaggle. Fonte: Kaggle - Ludovic Benistant - Hr Analytics

Atributos:

  1. satisfaction_level: Nível de satisfação do colaborador
  2. last_evaluation: Nota da última avaliação
  3. number_project: Número de projetos trabalhados
  4. average_montly_hours: Média mensal de horas trabalhadas
  5. time_spend_company: Anos de trabalho na empresa
  6. Work_accident: 0 - Não teve acidente de trabalho e 1 - Teve acidente de trabalho
  7. left: Indicador de demissão, 0 - Contratado e 1 - Desligado
  8. promotion_last_5years: Indicativo de promoção, 0 - Não e 1 - Sim
  9. sales: Departamento
  10. salary: Classificação do salário, Baixo, Médio e Alto

Objetivo O objetivo deste projeto é explorar as variáveis do conjunto de dados hr que podem auxiliar na identificação dos fatores que levaram alguns colaboradores a deixarem a empresa. Durante a investigação estas perguntas serão respondidas:

  1. Os colaboradores que saíram recebiam baixo salário?
  2. Será que é perceptível a insatisfação do colaborador?
  3. Excesso de trabalho, foi um fator negativo?
##  [1] "satisfaction_level"    "last_evaluation"      
##  [3] "number_project"        "average_montly_hours" 
##  [5] "time_spend_company"    "Work_accident"        
##  [7] "left"                  "promotion_last_5years"
##  [9] "sales"                 "salary"

** Visão Geral dos dados**

Sumário das informações:

##  satisfaction_level last_evaluation  number_project  average_montly_hours
##  Min.   :0.0900     Min.   :0.3600   Min.   :2.000   Min.   : 96.0       
##  1st Qu.:0.4400     1st Qu.:0.5600   1st Qu.:3.000   1st Qu.:156.0       
##  Median :0.6400     Median :0.7200   Median :4.000   Median :200.0       
##  Mean   :0.6128     Mean   :0.7161   Mean   :3.803   Mean   :201.1       
##  3rd Qu.:0.8200     3rd Qu.:0.8700   3rd Qu.:5.000   3rd Qu.:245.0       
##  Max.   :1.0000     Max.   :1.0000   Max.   :7.000   Max.   :310.0       
##                                                                          
##  time_spend_company Work_accident         left       
##  Min.   : 2.000     Min.   :0.0000   Min.   :0.0000  
##  1st Qu.: 3.000     1st Qu.:0.0000   1st Qu.:0.0000  
##  Median : 3.000     Median :0.0000   Median :0.0000  
##  Mean   : 3.498     Mean   :0.1446   Mean   :0.2381  
##  3rd Qu.: 4.000     3rd Qu.:0.0000   3rd Qu.:0.0000  
##  Max.   :10.000     Max.   :1.0000   Max.   :1.0000  
##                                                      
##  promotion_last_5years         sales         salary    
##  Min.   :0.00000       sales      :4140   high  :1237  
##  1st Qu.:0.00000       technical  :2720   low   :7316  
##  Median :0.00000       support    :2229   medium:6446  
##  Mean   :0.02127       IT         :1227                
##  3rd Qu.:0.00000       product_mng: 902                
##  Max.   :1.00000       marketing  : 858                
##                        (Other)    :2923

Os dados são consistentes e analisando o valor mínimo, médio, mediana e valor máximo, não foi possível verificar nesta análise inicial a existência de outliers.

Vamos conferir qual a estrutura dos dados, e se será necessário manipular os tipos das variáveis para auxiliar a análise.

str(hr)
## 'data.frame':    14999 obs. of  10 variables:
##  $ satisfaction_level   : num  0.38 0.8 0.11 0.72 0.37 0.41 0.1 0.92 0.89 0.42 ...
##  $ last_evaluation      : num  0.53 0.86 0.88 0.87 0.52 0.5 0.77 0.85 1 0.53 ...
##  $ number_project       : int  2 5 7 5 2 2 6 5 5 2 ...
##  $ average_montly_hours : int  157 262 272 223 159 153 247 259 224 142 ...
##  $ time_spend_company   : int  3 6 4 5 3 3 4 5 5 3 ...
##  $ Work_accident        : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ left                 : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ promotion_last_5years: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ sales                : Factor w/ 10 levels "accounting","hr",..: 8 8 8 8 8 8 8 8 8 8 ...
##  $ salary               : Factor w/ 3 levels "high","low","medium": 2 3 3 2 2 2 2 2 2 2 ...

O conjunto de dados é composto por 14.999 observações e 10 variáveis. Não tem nenhuma variável que seja uma identificação única do colaborador, então vamos considerar que cada registro corresponde a uma pessoa, sem duplicação.

As variáveis sales e salary são do tipo factor, vou criar duas variáveis não categóricas baseadas nelas. Essas duas variáveis serão utilizadas posteriormente no cálculo da correlação.

hr$left <- factor(hr$left, levels=c(0,1),labels=c("Contratado", "Demitido"))

O nível de satisfação do colaborador será agrupado em três níveis: SIM, NÃO e REGULAR.

# Cria novo campo satisfied no conjunto de dados hr
hr$satisfied <- as.factor(ifelse(hr$satisfaction_level<=.40, "NAO", 
                                 ifelse(hr$satisfaction_level<=.70, "REGULAR", 
                                        "SIM")))

Conferindo os campos criados:

table(hr$satisfied)
## 
##     NAO REGULAR     SIM 
##    3124    5577    6298

Será que existem valores nUlos? Vamos percorrer todas as variáveis somando todos os valores nulos.

# Verifica o total de NA em cada campo
colSums(is.na(hr))
##    satisfaction_level       last_evaluation        number_project 
##                     0                     0                     0 
##  average_montly_hours    time_spend_company         Work_accident 
##                     0                     0                     0 
##                  left promotion_last_5years                 sales 
##                     0                     0                     0 
##                salary             satisfied 
##                     0                     0

O conjunto de dados está completamente preenchido e não será necessário manipular estes valores.

Seção de Gráficos Univariados

Como é a empresa?

Left, a variável foco do análise, está dividida entre contratados, ou seja, os que ainda estão na empresa e os desligados, que não fazem mais parte da empresa. Dos 14.999 colaboradores totais, 3.571 foram desligados e 11.428 estão na ativa.

A distribuição é assimetrica positiva.

summary(hr$time_spend_company)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   2.000   3.000   3.000   3.498   4.000  10.000

Em média as pessoas trabalham 200 horas mensalmente, a maioria das pessoas trabalha entre 130 e 270 horas. No Brasil trabalham-se aproximadamente 220 horas mensais, então é bem razoável a distribuição do tempo.

A empresa tem alguns colaboradores que trabalham por mais de 7 anos, mas o mais comum é passar entre 2 e 4 anos na empresa.

Perfil dos colaboradores

prop.table(table(hr$left))
## 
## Contratado   Demitido 
##  0.7619175  0.2380825

A proporção de colaboradores que deixaram a empresa é de 24% do conjunto de dados.

Para facilitar a comparação, agrupei as informações entre contratados e demitidos. O fato de ter recebido ou não promoção nos últimos anos não variou de maneira significativa entre os dois grupos.

O maior grupo de satisfeitos está entre os que ainda estão contratados, apesar de terem colaboradores com uma satisfação baixa, o maior pico de insatisfeitos está entre os desligados. Observa-se que alguns colaboradores com um nível alto de satisfação deixaram a empresa, e isto será investigado no decorrer deste projeto.

A distribuição do nível de satisfação e da nota da última avaliação é bem similar nos dois grupos. Além dos satisfeitos, colaboradores bem avaliados também deixaram a empresa.

# Agrupa o total de resultados por departamento
Funcionarios_departamento <- aggregate(hr$sales, by=list(hr$sales),
                                       FUN = length)

formattable(Funcionarios_departamento, 
            list(x = color_tile("white", "#6699CC")))
Group.1 x
accounting 767
hr 739
IT 1227
management 630
marketing 858
product_mng 902
RandD 787
sales 4140
support 2229
technical 2720

Os departamentos support, technical e sales são os mais populosos da empresa, com 9089 colaboradores no total.

Para os desligados, os insatisfeitos formam o maior grupo, já no grupo dos que ainda são colaboradores o maior grupo é dos satisfeitos, seguido dos que tem uma satisfação regular.

Análise Univariada

Qual é a estrutura do conjunto de dados?

A estrutura de dados é composta por 14.999 observações, 10 variáveis importadas com o arquivo original. Foi adicionado a variável satisfied para representar em 3 faixas (SIM, REGULAR, NÃO) a satisfação do colaborador.

A variável left representa os colaboradores que ainda estão na empresa com o valor para colaboradores que permanecem na empresa e 1 para colaboradores desligados.

A maioria das variáveis são numéricas e duas são categóricas representadas por fatores: sales com 10 níveis e salary com 3.

Quais são os principais atributos de interesse deste conjunto de dados?

A principal variável de interesse do conjunto é left, que informa se o colaborador está na empresa ou se foi desligado. A variável com o nível de satisfação (satisfaction_level) também será foco da análise, uma vez que, a correlação das outras variáveis com ela pode ajudar a compreender os motivos que levaram as pessoas a deixarem a empresa.

Quais outros atributos você acha que podem lhe auxiliar na investigação destes atributos de interesse?

  1. promotion_last_5years: O total de promoções recebidas (promotion_last_5years) pode gerar uma insatisfação no colaborador se ele supor que não foi reconhecido;

  2. time_spend_company: O tempo passado numa empresa pode gerar uma necessidade de sair da empresa, nem sempre por uma causa negativa, mas pela vontade de viver novos desafios;

  3. salary: Essa variável é categorica com os valores baixo, médio e alto. A relação da remuneração com o satisfação e a decisão de saída será avaliado, apesar de várias pesquisas indicarem que o salário nem sempre é um grande influenciador nesta decisão. É possível que variáveis como número de promoções e nota recebida na ultima avaliação pesem mais na sensação de ter o trabalho reconhecido e este é um fator importante;

  4. number_project: Esta variável traz o total de projetos trabalhados pela pessoa, não sabemos se é o total em determinado período ou durante toda a permanência na empresa, mas, mesmo assim, podemos explorar questões como: as pessoas com mais números de projetos eram mais satisfeitas ou se sentiam sobrecarregadas e deixaram a empresa?

  5. sales: Há algum departamento problemático com baixo nível de satisfação? Acredito que esta questão é importante de ser investigada e pode ser impactante no resultado final.

Você criou novas variáveis a partir dos atributos existentes no conjunto de dados?

O conjunto de dados estava bem consistente, as alterações realizadas foram para adaptar as informações para análise.

Foi criada a variável satisfied, do tipo factor com 3 níveis: SIM, NAO e REGULAR. O objetivo desse campo é facilitar na visualização das faixas de satisfação dos colaboradores. As faixas definidas para este projeto sem qualquer compromisso com valores padrões de um departamento de recursos humanos.

Dos atributos investigados, distribuições incomuns foram encontradas? Você aplicou operações nos dados para limpá-los, ajustá-los ou mudar a forma dos dados? Se sim, por quê?

Pesquisei variaveis NA, mas o grupo não tinha nenhuma. Variáveis sem conteúdo não foram pesquisadas porque na importação do arquivo eu atribui por padrão o valor NA para elas (na.strings=c(“”,“NA”)), então, automaticamente ao pesquisar por NA, eu já estava pesquisando pelas vazias.

Em alguns gráficos, transformei a variável left em factor para auxiliar o agrupamento dos dados em 0 e 1, e não na média destes dois números.

Observando o sumário das variáveis, os dados são consistentes e sem outliers, portanto não foi necessário manipular o conteúdo.

A variável salary, cujo conteúdo é a faixa do salário (alto, médio, baixo), seria uma ótima candidata a ter a operação log10 aplicada a seu conteúdo caso ele fosse o valor monetário do salário.

Seção de Gráficos Bivariados

Agora que já conhecemos um poucos as variáveis do conjunto de dados, vamos verificar como elas se relacionam. Nesta seção tentaremos responder as perguntas descritas no ínicio do trabalho.

Os colaboradores que saíram recebiam baixo salário?

Entre as pessoas que sairam temos todas as faixas de salário, o volume de pessoas com salário alto é menor e não está presente em todos os departamentos. Mas o gráfico já é suficiente para responder a pergunta, as pessoas que saíram recebiam, em sua maioria, um salário baixo ou médio.

Investigando um pouco mais o departamento, vamos ver a proporção de pessoas que sairam de cada uma deles.

Departamento Contratado Demitido
accounting 73 27
hr 71 29
IT 78 22
management 86 14
marketing 76 24
product_mng 78 22
RandD 85 15
sales 76 24
support 75 25
technical 74 26

Os departamentos de gerencia (management) e pesquisa e desenvolvimento (RandD) tiveram a menor evasão de colaboradores. Os outros departamentos tiveram entre 22 e 29%. Abaixo podemos ver esta distribuição:

Quando comparados, as pessoas que deixaram a empresa obtiveram uma mediana maior, principalmente no departamento RandD. No departamento de marketing e hr, as pessoas trabalharam entre 150 e 250h mas com uma mediana menor.

Departamento Contratado Desligado
accounting 199.0373 207.0294
hr 199.2500 197.3070
IT 198.8868 213.8498
management 200.2338 207.2637
marketing 198.8885 200.9901
product_mng 197.7656 207.7879
RandD 198.9520 210.9752
sales 199.5717 205.0414
support 199.1410 205.6360
technical 198.4711 214.1836

Com exceção do departamento de recursos humanos (hr), os colaboradores que se desligaram da empresa trabalharam em média mais do que os dos outros departamentos, atingindo uma média mensal superior a 200 horas. Foram realçados em vermelho os casos em que o grupo de desligados trabalhou por mais horas.

Sabemos que os colaboradores que se desligaram trabalharam por mais horas, será que eles conseguiram ficar por muitos anos na empresa?

Este gráfico trás uma informação interessante, de maneira geral as pessoas não saem da empresa no primeiro ano de trabalho. Os que saem após esse período, são os que trabalharam em média mais tempo por mês.O grupo de maior volume é formado por colaboradores que atuam na empresa a mais de 7 anos.

Outro ponto é que as pessoas que deixam a empresa não chegaram a completar 5 anos de trabalho. Em compração, os que permanecem na empresa chegaram a trabalhar por 10 anos.

Nós vemos uma insatisfação nos colaboradores que deixam a empresa no 3º ou 4º anos. Aparentemente se você passa por essa fase, o nível de satisfação cresce, ficando acima de 0.75, mas mesmo assim, os colaboradores saem entre o 5º e 6º, e nunca atingem o 7º ano. O ideal para este caso é que tivéssemos um histórico dos níveis de satisfação destas pessoas, ano após ano, assim conseguiríamos projetar a partir de qual ano a insatisfação tende a aumentar ou diminuir.

será que há uma variação similar na nota de avaliação recebida por este colaborador durante os anos trabalhados? Para descobrir isso, vamos ver a nota de avaliação por ano trabalhado:

O 3º ano parece um pouco crítico, não? Vimos no gráfico anterior que muitos dos que saíram demonstraram um nível de satisfação baixo, e neste gráfico percebemos que no 3º a maioria dos desligados receberam uma nota baixa na avaliação. Pode ser motivado por uma avaliação mais rigorosa da empresa após de 3 anos de trabalho ou pode existir uma política específica para este período.

Do 4º ano em diante os desligados receberam em sua maioria uma boa nota na avaliação, em geral acima de 0.8.

Ter mais tempo de empresa não significa que o salário será melhor. Do sexto para o 10º ano a faixa salarial que prevalece é a média, mas como os que saíram não chegaram a completar 7 anos de trabalho, não é possível verificar se isso se repetiria para eles.

Mesmo tendo sofrido acidente de trabalho, os colaboradores permanecem na empresa.

Vamos a outra questão: Quem tem mais projetos trabalha mais?

Sim. Na média, quem teve mais projetos trabalhou mais horas mensais. Faz bastante sentido que seja assim, mais carga de trabalho, mais tempo necessário para resolve-la.

Agora que já temos uma impresssão sobre o conjunto de dados, vamos, através do cálculo da correlação entre as variáveis, verificar se os valores obtidos nos ajudam a aprofundar a exploração das variáveis.

Correlação entre todas as variáveis do conjunto de dados hr:

Correlação entre as variáveis do subconjunto de dados dos colaboradores desligados.

Quando calculada a correlação só para os dados dos colaboradores desligados, a correlação entre as variáveis fica mais forte.

Valores de correlação para o conjunto hr:

# Imprime a matriz com todos os gráficos em um arquivo svg. Retire o eval=FALSE para executar esta célula.
jpeg(filename = "gg.jpg")
print(g)
dev.off()
ggpair

ggpair

Para o contexto, a correlação entre left e satisfaction_level é a mais forte, mesmo não sendo tão forte de maneira geral.

#with(hr, cor.test(left, satisfaction_level, method = 'pearson'))

Análise Bivariada

Discuta sobre alguns dos relacionamentos observados nesta parte da investigação. Como os atributos de interesse variaram no conjunto de dados?

A variável left e os anos de trabalho de na empresa variam com o passar do tempo. O 3º ano parece ser o mais crítico, onde são registrados níveis de satisfação baixos, nos anos seguintes há um aumento e não foi registrada nenhuma saída após o colaborador completar 7 anos de casa.

As notas recebidas na avaliação também variam com o passar do tempo. No terceiro ano é registrado o maior volume de notas baixas entre os que deixaram a empresa, e os outros com mais tempo de trabalho, receberam boas notas em suas avaliações.

Boa parte dos que tiveram acidente de trabalho durante sua jornada permaneceram na empresa, há uma correlação muito fraca entre essas variáveis de -0.1546.

A medida que o número de projetos aumenta, também aumenta o média de horas trabalhadas por mês. E essa correlação é a mais forte do grupo sendo 0.4172.

Trabalhar por anos na empresa não está relacionado a um aumento da faixa de salário. Para aprofundar esta análise seria necessário saber o valor do salário recebido porque pode ter havido um aumento no valor, sem que isso significasse uma troca na faixa salarial (Baixo, Médio e Alto).

Você observou algum relacionamento interessante entre os outros atributos (os que não são de interesse)?

O relacionamento mais forte foi encontrado entre as variáveis número de projetos e média de horas trabalhadas. Não é claro se o total de projetos trabalhados corresponde a um período, por exemplo, são os projetos trabalhados no mês, no ano, desde a contratação? Supondo que seja mensal, faria todo sentido dizer que quem executou mais projetos, consequentemente pode ter tido que trabalhar mais horas no mês. Saber o nível de complexidade do projeto nos auxiliaria na interpretação da relação da quantidade de projetos e o tempo necessário para executá-lo.

Qual foi o relacionamento mais forte encontrado?

No que interessa a esta análise, que é investigar o porque alguns colaboradores deixaram a empresa, a variável nível de satisfação é a que tem a correlação mais forte com left, indicador de desligamento. Obteve-se o valor de correlação igual a -0.388375, ou seja, 40% dos desligamentos poderiam ser explicados pelo nível de satisfação, mas isso não significa que seja a causa dele.

Seção de Gráficos Multivariados

Distribuição da carga de trabalho por departamento:

Porque os bons e satisfeitos estão nos deixando?

Para responder a esta pergunta, o primeiro passo é criar um dataset com os dados dos colaboradores que atendem aos determinados critérios: 1. Na última avaliação tiveram nota superior a 0.7; 2. Trabalharam na empresa por mais de 4 anos; 3. Trabalharam em mais de 5 projetos; 4. No mês, em média, trabalharam mais de 200 horas

## [1] 961

Foi criado o data.frame hr_func_bons com 961 registros.

Não é nada surpreendente que as pessoas tenham saído da empresa, elas trabalharam mais pela mesma faixa de salário. Claro que para uma análise mais efetiva destas variáveis, seria necessário saber, por exemplo, na faixa de altos salários se os valores são os mesmos, ou se os que trabalhavam mais recebiam uma quantia maior, mesmo sendo caracterizado como a mesma faixa.

Vamos fazer a mesma análise só que observando o total de projetos x horas trabalhadas.

No comparativo entre os permanecem na empresa e os que saíram é possível ver que mesmo entre os melhores os que saíram trabalhavam mais e exceto pelos departamentos de product_mng e sales, trabalharam por salários baixos e médianos.

Bem, esse gráfico nos leva às seguintes observações: 1. Nesta perspectiva os desligados continuam trabalhando por mais horas que os contratados; 2. As horas mensais trabalhadas entre os contratados varia quase que de maneira imperceptível independente do número de projetos. As pessoas que trabalharam em 6 projetos, trabalharam entre 150 e 250 horas mensais da mesma forma que os que trabalharam em 2 projetos; 3. As pessoas que deixaram a empresa trabalharam mais horas por mês que os que ainda estão contratados. Para este grupo, a média de horas trabalhadas aumentou a medida que o número de projetos aumentou; 4. Os demitidos foram os únicos que trabalharam em 6 projetos ou mais.

Será que é perceptível a insatisfação do colaborador?

O que eu quero saber é se é a percepção que o colaborador tem de sí, ou seja, seu nível de satisfação se relaciona de alguma forma com a forma como o empregador percebe o colaborador e atribui uma pontuação para isso através da avaliação.

Entre os que se desligaram da empresa, tem três grupos bem distintos: 1. Insatisfeitos, mas reconhecidos como bons pela empresa; Neste grupo nós temos uma associação claramente negativa entre estas duas variáveis. 2. Insatisfeitos e não reconhecidos, ou seja, obtiveram nota baixa na avaliação; 3. Satisfeitos e reconhecidos como bons colaboradores.

Receber uma nota ruim na avaliação não é um atributo comum entre os que saíram.

Excesso de trabalho, foi um fator negativo?

Muitíssimo interessante que entre os desligados a divisão dos insatisfeitos esteja bem clara. Nesta visão, fica evidente, mas sem explicar a causa, o desequilíbrio na hora trabalhada. Respondendo a questão inicial, os insatisfeitos viveram duas situações, a que trabalharam mais que a média e a que trabalharam bem menos que a média mensal para essa variável que são 200 horas mensais. A medida que as horas trabalhadas se aproximaram desta faixa de 200 a 250, a satisfação aumentou.

O mesmo gráfico impresso para o conjunto de dados dos “bons colaboradores” evidência como os que se desligaram trabalharam em média por mais horas em comparação com os que ainda trabalham na empresa, para esses os pontos no gráfico são mais dispersos.

Vamos imprimir esse mesmo gráfico para os colaboradores que registraram um rendimento inferior.

Neste grupo nós vemos que os que permaneceram na empresa tiveram uma tendência positiva na satisfação, mantendo-se entre 0.5 e 1. Os desligados estavam mais insatisfeitos, talvez porque não desenvolveram seu potencial máximo, ou não foram envolvidos em muitos projetos. Como estamos falando de comportamento humano, fica difícil inferir sobre a motivação real sem conhecer mais variáveis.

## [1] "Total de colaboradores medianos desligados:"
## [1] 0
## [1] "Total de bons colaboradores desligados:"
## [1] 0
## Aggregation requires fun.aggregate: length used as default
Satisfacao Contratado Desligado
NAO 59 845
REGULAR 28 3
SIM 23 3

Mais uma vez confirmamos que a maior parte dos bons colaboradores desligados era composta por colaboradores insatisfeitos.

Aumentando o contexto vamos comparar o total por faixa tanto para os desligados, quanto para os contratados.

table(hr$satisfied)
## 
##     NAO REGULAR     SIM 
##    3124    5577    6298
by(hr$left==1, hr$satisfied, summary)
## hr$satisfied: NAO
##    Mode   FALSE    NA's 
## logical    3124       0 
## -------------------------------------------------------- 
## hr$satisfied: REGULAR
##    Mode   FALSE    NA's 
## logical    5577       0 
## -------------------------------------------------------- 
## hr$satisfied: SIM
##    Mode   FALSE    NA's 
## logical    6298       0

A medida que diminui a faixa de satisfação, nós percebemos um aumento no total de desligados e uma diminuição dos contratados.

Já exploramos e tiramos algumas conclusões sobre o relacionamento das variáveis do conjunto de dados, agora vamos criar um modelo linear tendo como variável focal left.

m1 <- lm(left ~ satisfaction_level, data = hr)
## Warning in model.response(mf, "numeric"): using type = "numeric" with a
## factor response will be ignored
## Warning in Ops.factor(y, z$residuals): '-' not meaningful for factors
m2 <- update(m1, ~ . + time_spend_company)
## Warning in model.response(mf, "numeric"): using type = "numeric" with a
## factor response will be ignored

## Warning in model.response(mf, "numeric"): '-' not meaningful for factors
m3 <- update(m2, ~ . + average_montly_hours)
## Warning in model.response(mf, "numeric"): using type = "numeric" with a
## factor response will be ignored

## Warning in model.response(mf, "numeric"): '-' not meaningful for factors
m4 <- update(m3, ~ . + number_project)
## Warning in model.response(mf, "numeric"): using type = "numeric" with a
## factor response will be ignored

## Warning in model.response(mf, "numeric"): '-' not meaningful for factors
mtable(m1, m2, m3, m4)
## Warning in Ops.factor(r, 2): '^' not meaningful for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(weighted.residuals(object), 2): '^' not meaningful
## for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors

## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(r, 2): '^' not meaningful for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(weighted.residuals(object), 2): '^' not meaningful
## for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors

## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(r, 2): '^' not meaningful for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(weighted.residuals(object), 2): '^' not meaningful
## for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors

## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(r, 2): '^' not meaningful for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(weighted.residuals(object), 2): '^' not meaningful
## for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors

## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## 
## Calls:
## m1: lm(formula = left ~ satisfaction_level, data = hr)
## m2: lm(formula = left ~ satisfaction_level + time_spend_company, 
##     data = hr)
## m3: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours, data = hr)
## m4: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours + number_project, data = hr)
## 
## ============================================================
##                           m1       m2       m3       m4     
## ------------------------------------------------------------
##   (Intercept)            1.646    1.526    1.445    1.501   
##                                                             
##   satisfaction_level    -0.665   -0.647   -0.646   -0.665   
##                                                             
##   time_spend_company              0.031    0.029    0.033   
##                                                             
##   average_montly_hours                     0.000    0.001   
##                                                             
##   number_project                                   -0.031   
##                                                             
## ------------------------------------------------------------
##   Deviance                  0.0      0.0      0.0      0.0  
##   N                     14999    14999    14999    14999    
## ============================================================

As variáveis satisfaction_level, time_spend_company, average_montly_hours e number_project obtiveram o mesmo r² de 0.2. 20% é um resultado fraco e abaixo da minha expectativa.

Neste ponto, sei que o nível de satisfação pode estar relacionado com o desligamento do colaborador, por isso vou criar um outro modelo em que esta variável seja o ponto focal para as outras.

m1 <- lm(satisfaction_level ~ average_montly_hours, data = hr)
m2 <- update(m1, ~ . + time_spend_company)
m3 <- update(m3, ~ . + number_project)
## Warning in model.response(mf, "numeric"): using type = "numeric" with a
## factor response will be ignored
## Warning in Ops.factor(y, z$residuals): '-' not meaningful for factors
m4 <- update(m4, ~ . + promotion_last_5years)
## Warning in model.response(mf, "numeric"): using type = "numeric" with a
## factor response will be ignored

## Warning in model.response(mf, "numeric"): '-' not meaningful for factors
mtable(m1, m2, m3, m4)
## Warning in Ops.factor(r, 2): '^' not meaningful for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(weighted.residuals(object), 2): '^' not meaningful
## for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors

## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(r, 2): '^' not meaningful for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## Warning in Ops.factor(weighted.residuals(object), 2): '^' not meaningful
## for factors
## Warning in Ops.factor(res, 2): '^' not meaningful for factors

## Warning in Ops.factor(res, 2): '^' not meaningful for factors
## 
## Calls:
## m1: lm(formula = satisfaction_level ~ average_montly_hours, data = hr)
## m2: lm(formula = satisfaction_level ~ average_montly_hours + time_spend_company, 
##     data = hr)
## m3: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours + number_project, data = hr)
## m4: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours + number_project + promotion_last_5years, 
##     data = hr)
## 
## =================================================================
##                             m1         m2        m3       m4     
## -----------------------------------------------------------------
##   (Intercept)             0.633***   0.680***   1.501    1.500   
##                          (0.008)    (0.009)                      
##   average_montly_hours   -0.000*    -0.000      0.001    0.001   
##                          (0.000)    (0.000)                      
##   time_spend_company                -0.017***   0.033    0.034   
##                                     (0.001)                      
##   satisfaction_level                           -0.665   -0.662   
##                                                                  
##   number_project                               -0.031   -0.031   
##                                                                  
##   promotion_last_5years                                 -0.177   
##                                                                  
## -----------------------------------------------------------------
##   R-squared                   0.0        0.0                     
##   adj. R-squared              0.0        0.0                     
##   sigma                       0.2        0.2                     
##   F                           6.0       77.5                     
##   p                           0.0        0.0                     
##   Log-likelihood           -403.7     -329.7                     
##   Deviance                  926.8      917.7       0.0      0.0  
##   AIC                       813.5      667.3                     
##   BIC                       836.3      697.8                     
##   N                       14999      14999     14999    14999    
## =================================================================

20% do nível de satisfação pode ser explicado pelos números de projetos e promoções nos últimos 5 anos. Este relacionamento não implica causalidade.

Análise Multivariada

Discuta sobre os relacionamentos observados nesta parte da investigação. Quais atributos que fortaleceram os demais na observação das variáveis de interesse?

Quando o nível de satisfação de todo o grupo é analisado fica evidente uma distribuição bem diferente entre os que permanecem na empresa e os que saem. Os colaboradores que ficaram tem uma satisfação de regular a satisfeito, com um volume pequeno de colaboradores insatisfeitos. Entre os que saíram o grupo de insatisfeitos é o maior, demonstrando a correlação observada entre elas, mas não é possível afirmar que a insatisfação seja a causa de uma demissão por exemplo.

As horas mensais trabalhadas também desempenharam um papel importante no grupo dos demitidos, sendo comum encontrar as informações polarizadas em muito ou pouco trabalho.

Interações surpreendentes e/ou interessantes foram encontradas entre os atributos?

Foi uma surpresa descobrir que o trabalhar por menos horas que a média mensal foi um fator comum entre os desligados.

Modelos foram criados usando este conjunto de dados? Discuta sobre os pontos fortes e as limitações do seu modelo.

Sim, foram criados dois modelos, um para left e outro para satisfaction_level.

No 1º foi criado um modelo linear de regressão para verificar a relação entre left e as variáveis satisfaction_level, time_spend_company, average_montly_hours, number_project. As variáveis foram selecionadas com base no valor de correlação encontrada entre elas. O resultado recebido foi um pouco decepcionante porque o r² mesmo ajustado só consegue explicar 20% da variável dependente left. Outro valor a ser observado pelo modelo é que há uma alta significância entre as variáveis demonstrado pelo valor de p=0.

No 2º modelo o objetivo do modelo linear de regressão foi relacionar o nível de satisfação com a outras variáveis. Se não estar satisfeito pode estar relacionado, sem ser a causa, com a saída do colaborador, então o que poderia estar relacionado com a baixa satisfação dele? No modelo criado com total de anos trabalhados na empresa e a média mensal de horas trabalhadas tem o menor valor de r²=0, e as variáveis com o número de projetos trabalhados e a existência de promoção nos últimos anos demonstraram uma correlação baixa com a baixa satisfação dele sendo r²=0.2.


Gráficos Finais e Sumário

Primeiro Gráfico

Os colaboradores que mais trabalham são os mais bem pagos?

Para minha surpresa, não. Entre os que não fazem mais parte da empresa, os com alto salário trabalharam em menos projetos e obtiveram uma nota baixa na avaliação. Os com boa nota na avaliação (acima de 0.7) trabalharam em mais de 4 projetos. Os com nota inferior a 0.6 trabalharam em sua maioria em 2 projetos. Os contratados tem uma distribuição mais uniforme da satisfação e a maior parte trabalha de 3 a 5 projetos.

Segundo Gráfico

Mais uma vez conseguimos visualizar a distribuição das horas trabalhadas pelos que se desligaram da empresa. Eles estão polarizados em dois grupos bem definidos, hora trabalham acima da média ou bem abaixo. Nos departamentos Sales e Support, nós vemos, para os que ainda trabalham na empresa, uma incidência maior da faixa média de salário, mas no grupo dos desligados não é possível observar a prevalência desta faixa, a maioria deles recebia um baixo salário.

Como não temos o cargo ocupado por cada um deles, fica difícil traçar uma comparação entre eles. Nesta análise estamos supondo que eles ocupam cargos similares.

Terceiro Gráfico

Para complementar nossa análise vamos criar um novo modelo, usando o método rpart para construir uma árvore de decisão. Ao fim do processo teremos uma visualização boa dos dados.

Primeiro precisamos separar uma amostra de dados de teste e outra de treino. Estou definindo que ela tenha 80% do tamanho do original. Vou alterar o conteúdo de left, 0=Contratado e 1=Demitido.

hr$left <- factor(hr$left, labels=c("Contratado", "Desligado"))

# Cria amostra com 80% do tamanho de hr
sample_size <- floor(0.80 * nrow(hr))

# Set.seed para fins do resultado randomico
set.seed(123)

# Cria lista de índices
train_ind <- sample(seq_len(nrow(hr)), size = sample_size)

# Amostra para treino
train <- hr[train_ind, 1:8]

# Amostra para teste
test <- hr[-train_ind, 1:8 ]

O modelo vai se basear nas variáveis que já foram investigadas até agora e que consideramos importante durante a análise exploratória. O fator a ser predito será left, ou seja, se o colaborador permanecerá ou sairá, e o modelo se baseará no nível de satisfação, nota da última avaliação, média mensal de horas trabalhadas, número de projetos e anos trabalhados na empresa.

# Cria o modelo
fit <- rpart(left ~ satisfaction_level + last_evaluation + 
                    average_montly_hours + number_project + 
                    time_spend_company,
             data=train,
             method="class")

# Prediz o resultado
predicted_hr <- predict(fit, test)


auc(as.numeric(test$left) - 1, predicted_hr[, 2])
## Area under the curve: 0.9713

Uau! O classificador teve uma excelente pontuação de 0.97.

Agora que sabemos que temos um ótimo modelo, vamos plotar a árvore de decisões.

rpart.plot(fit, extra = 104, 
                box.palette="GnBu", 
                branch.lty=3, 
                shadow.col="gray", 
                nn=TRUE)

De fato é um bom modelo, veja como ele espelha e reforça a análise realizada anteriormente, o colaborador com nível de satisfação baixo, muitos projetos, ou satisfeito e trabalhando por muitas horas mensais tem uma probabilidade maior de sair.


Reflexão

É sempre muito estimulante investigar uma base de dados buscando por fatores que possam auxiliar a uma organização a reter seus talentos e manter-se com um time de alto nível. A limitação desta análise é que ela é baseada em comportamento humano, e as poucas variáveis do conjunto de dados não são suficientes para entregar um resultado consistente que possa ser seguido pela organização. Seria muito produtivo para esta análise sabermos informações sobre os cargos, o nível de satisfação por ano de trabalho, o nível de complexidade dos projetos trabalhados e até mesmo o regime de contratação.

Com as informações disponíveis foi possível identificar o quanto a carga de trabalho é um fator determinante para saída do colaborador. Mesmo que ele tenha obtido uma boa nota na avaliação e esteja satisfeito, se ele estiver com uma carga excessiva de projeto e horas de trabalho ele provavelmente sairá. Mas se ele já está um pouco insatisfeito e a empresa atribuir a ele muitas horas ou menos horas do que a média trabalhada por todos, é possível que ele também saia.

Eu gostaria de ter mais informações sobre o valor monetário do salário. Entender se a remuneração pode ser um fator de insatisfação é dificil quando você não sabe o cargo e o salário real. O que pode ser percebido em relação ao reconhecimento do trabalhado é que foram registradas pouquíssimas promoções, inclusive a proporção de acidentes de trabalho é superior do que a de promoções. Entre os demitidos poucas pessoas tinham um alto salário.

Mesmo não tendo todas as variáveis que considero importante, foi divertido investigar as questões propostas no ínicio deste projeto, eu diria que criar o modelo para a árvore da decisão, e obter um AUC tão alto, foi um dos pontos mais compensadores do processo.

http://stackoverflow.com/questions/38778813/geom-text-works-for-histogram-in-r http://stackoverflow.com/questions/30057765/histogram-ggplot-show-count-label-for-each-bin-for-each-category

======= Recursos Humanos - Quem está deixando a empresa?

por Lieby Cardoso

Este conjunto de dados foi simulado e disponibilizado por Ludovic Benistant para o site Kaggle. Fonte: Kaggle - Ludovic Benistant - Hr Analytics

Atributos:

  1. satisfaction_level: Nível de satisfação do colaborador
  2. last_evaluation: Nota da última avaliação
  3. number_project: Número de projetos trabalhados
  4. average_montly_hours: Média mensal de horas trabalhadas
  5. time_spend_company: Anos de trabalho na empresa
  6. Work_accident: 0 - Não teve acidente de trabalho e 1 - Teve acidente de trabalho
  7. left: Indicador de demissão, 0 - Contratado e 1 - Desligado
  8. promotion_last_5years: Indicativo de promoção, 0 - Não e 1 - Sim
  9. sales: Departamento
  10. salary: Classificação do salário, Baixo, Médio e Alto

Objetivo O objetivo deste projeto é explorar as variáveis do conjunto de dados hr que podem auxiliar na identificação dos fatores que levaram alguns colaboradores a deixarem a empresa. Durante a investigação estas perguntas serão respondidas:

  1. Os colaboradores que saíram recebiam baixo salário?
  2. Será que é perceptível a insatisfação do colaborador?
  3. Excesso de trabalho, foi um fator negativo?
##  [1] "satisfaction_level"    "last_evaluation"      
##  [3] "number_project"        "average_montly_hours" 
##  [5] "time_spend_company"    "Work_accident"        
##  [7] "left"                  "promotion_last_5years"
##  [9] "sales"                 "salary"

** Visão Geral dos dados**

Sumário das informações:

##  satisfaction_level last_evaluation  number_project  average_montly_hours
##  Min.   :0.0900     Min.   :0.3600   Min.   :2.000   Min.   : 96.0       
##  1st Qu.:0.4400     1st Qu.:0.5600   1st Qu.:3.000   1st Qu.:156.0       
##  Median :0.6400     Median :0.7200   Median :4.000   Median :200.0       
##  Mean   :0.6128     Mean   :0.7161   Mean   :3.803   Mean   :201.1       
##  3rd Qu.:0.8200     3rd Qu.:0.8700   3rd Qu.:5.000   3rd Qu.:245.0       
##  Max.   :1.0000     Max.   :1.0000   Max.   :7.000   Max.   :310.0       
##                                                                          
##  time_spend_company Work_accident         left       
##  Min.   : 2.000     Min.   :0.0000   Min.   :0.0000  
##  1st Qu.: 3.000     1st Qu.:0.0000   1st Qu.:0.0000  
##  Median : 3.000     Median :0.0000   Median :0.0000  
##  Mean   : 3.498     Mean   :0.1446   Mean   :0.2381  
##  3rd Qu.: 4.000     3rd Qu.:0.0000   3rd Qu.:0.0000  
##  Max.   :10.000     Max.   :1.0000   Max.   :1.0000  
##                                                      
##  promotion_last_5years         sales         salary    
##  Min.   :0.00000       sales      :4140   high  :1237  
##  1st Qu.:0.00000       technical  :2720   low   :7316  
##  Median :0.00000       support    :2229   medium:6446  
##  Mean   :0.02127       IT         :1227                
##  3rd Qu.:0.00000       product_mng: 902                
##  Max.   :1.00000       marketing  : 858                
##                        (Other)    :2923

Os dados são consistentes e analisando o valor mínimo, médio, mediana e valor máximo, não foi possível verificar nesta análise inicial a existência de outliers.

Vamos conferir qual a estrutura dos dados, e se será necessário manipular os tipos das variáveis para auxiliar a análise.

str(hr)
## 'data.frame':    14999 obs. of  10 variables:
##  $ satisfaction_level   : num  0.38 0.8 0.11 0.72 0.37 0.41 0.1 0.92 0.89 0.42 ...
##  $ last_evaluation      : num  0.53 0.86 0.88 0.87 0.52 0.5 0.77 0.85 1 0.53 ...
##  $ number_project       : int  2 5 7 5 2 2 6 5 5 2 ...
##  $ average_montly_hours : int  157 262 272 223 159 153 247 259 224 142 ...
##  $ time_spend_company   : int  3 6 4 5 3 3 4 5 5 3 ...
##  $ Work_accident        : int  0 0 0 0 0 0 0 0 0 0 ...
##  $ left                 : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ promotion_last_5years: int  0 0 0 0 0 0 0 0 0 0 ...
##  $ sales                : Factor w/ 10 levels "accounting","hr",..: 8 8 8 8 8 8 8 8 8 8 ...
##  $ salary               : Factor w/ 3 levels "high","low","medium": 2 3 3 2 2 2 2 2 2 2 ...

O conjunto de dados é composto por 14.999 observações e 10 variáveis. Não tem nenhuma variável que seja uma identificação única do colaborador, então vamos considerar que cada registro corresponde a uma pessoa, sem duplicação.

As variáveis sales e salary são do tipo factor, vou criar duas variáveis não categóricas baseadas nelas. Essas duas variáveis serão utilizadas posteriormente no cálculo da correlação.

# Cria variável salary_le, versão numéricas de salary
hr$salary_le = c("high"=0, "low"=1, "medium"=2)[as.numeric(hr$salary)]

# Cria variável sales_le, versão numéricas de sales
hr$sales_le = c("accounting"=0, "hr"=1, "IT"=2, "management"=3,  "marketing"=4,  "product_mng"=5, "RandD"=6, "sales"=7, "support"=8, "technical"=9)[as.numeric(hr$sales)] 

O nível de satisfação do colaborador será agrupado em três níveis: SIM, NÃO e REGULAR.

# Cria novo campo satisfied no conjunto de dados hr
hr$satisfied <- as.factor(ifelse(hr$satisfaction_level<=.40, "NAO", ifelse(hr$satisfaction_level<=.70, "REGULAR", "SIM")))

Conferindo os campos criados:

table(hr$salary_le)
## 
##    0    1    2 
## 1237 7316 6446
table(hr$sales_le)
## 
##    0    1    2    3    4    5    6    7    8    9 
##  767  739 1227  630  858  902  787 4140 2229 2720
table(hr$satisfied)
## 
##     NAO REGULAR     SIM 
##    3124    5577    6298

Será que existem valores nUlos? Vamos percorrer todas as variáveis somando todos os valores nulos.

# Verifica o total de NA em cada campo
for (i in 1:9) {
  print (paste(names(hr[i]) , sum(is.na(hr[i])), sep="="))
  next
  
}
## [1] "satisfaction_level=0"
## [1] "last_evaluation=0"
## [1] "number_project=0"
## [1] "average_montly_hours=0"
## [1] "time_spend_company=0"
## [1] "Work_accident=0"
## [1] "left=0"
## [1] "promotion_last_5years=0"
## [1] "sales=0"

O conjunto de dados está completamente preenchido e não será necessário excluir oS valores nulos através do comando abaixo:

Seção de Gráficos Univariados

Como é a empresa?

Em média as pessoas trabalham 200 horas mensalmente, a maioria das pessoas trabalha entre 130 e 270 horas. No Brasil trabalham-se aproximadamente 220 horas mensais, então é bem razoável a distribuição do tempo.

A empresa tem alguns colaboradores que trabalham por mais de 7 anos, mas o mais comum é passar entre 2 e 4 anos na empresa.

Perfil dos colaboradores

prop.table(table(hr$left))
## 
##         0         1 
## 0.7619175 0.2380825

A proporção de colaboradores que deixaram a empresa é de 24% do conjunto de dados.

Para facilitar a comparação, agrupei as informações entre contratados e demitidos. O fato de ter recebido ou não promoção nos últimos anos não variou de maneira significativa entre os dois grupos.

O maior grupo de satisfeitos está entre os que ainda estão contratados, apesar de terem colaboradores com uma satisfação baixa, o maior pico de insatisfeitos está entre os desligados. Observa-se que alguns colaboradores com um nível alto de satisfação deixaram a empresa, e isto será investigado no decorrer deste projeto.

A distribuição do nível de satisfação e da nota da última avaliação é bem similar nos dois grupos. Além dos satisfeitos, colaboradores bem avaliados também deixaram a empresa.

# Agrupa o total de resultados por departamento
Funcionarios_departamento <- aggregate(hr$sales, by=list(hr$sales) ,FUN = length)
formattable(Funcionarios_departamento, list(
            x = color_tile("white", "#6699CC")))
Group.1 x
accounting 767
hr 739
IT 1227
management 630
marketing 858
product_mng 902
RandD 787
sales 4140
support 2229
technical 2720

Os departamentos support, technical e sales são os mais populosos da empresa, com 9089 colaboradores no total.

Para os desligados, os insatisfeitos formam o maior grupo, já no grupo dos que ainda são colaboradores o maior grupo é dos satisfeitos, seguido dos que tem uma satisfação regular.

Análise Univariada

Qual é a estrutura do conjunto de dados?

A estrutura de dados é composta por 14.999 observações, 10 variáveis importadas com o arquivo original. Três variáveis foram adicionadas: 1. Salary_le: salary é uma variável categórica e criei a salary_le com a representação numerica de cada nível de salary; 2. Sales_le: É a mesma situação de salary, sales_le é a representação numérica dos valores de sales. 3. satisfied: Criei faixas de satisfação para facilitar a impressão de algumas informações nos gráficos.

A variável left representa os colaboradores que ainda estão na empresa com o valor para colaboradores que permanecem na empresa e 1 para colaboradores desligados.

A maioria das variáveis são numéricas e duas são categóricas representadas por fatores: sales com 10 níveis e salary com 3.

Quais são os principais atributos de interesse deste conjunto de dados?

A principal variável de interesse do conjunto é left, que informa se o colaborador está na empresa ou se foi desligado. A variável com o nível de satisfação (satisfaction_level) também será foco da análise, uma vez que, a correlação das outras variáveis com ela pode ajudar a compreender os motivos que levaram as pessoas a deixarem a empresa.

Quais outros atributos você acha que podem lhe auxiliar na investigação destes atributos de interesse?

  1. promotion_last_5years: O total de promoções recebidas (promotion_last_5years) pode gerar uma insatisfação no colaborador se ele supor que não foi reconhecido;

  2. time_spend_company: O tempo passado numa empresa pode gerar uma necessidade de sair da empresa, nem sempre por uma causa negativa, mas pela vontade de viver novos desafios;

  3. salary: Essa variável é categorica com os valores baixo, médio e alto. A relação da remuneração com o satisfação e a decisão de saída será avaliado, apesar de várias pesquisas indicarem que o salário nem sempre é um grande influenciador nesta decisão. É possível que variáveis como número de promoções e nota recebida na ultima avaliação pesem mais na sensação de ter o trabalho reconhecido e este é um fator importante;

  4. number_project: Esta variável traz o total de projetos trabalhados pela pessoa, não sabemos se é o total em determinado período ou durante toda a permanência na empresa, mas, mesmo assim, podemos explorar questões como: as pessoas com mais números de projetos eram mais satisfeitas ou se sentiam sobrecarregadas e deixaram a empresa?

  5. sales: Há algum departamento problemático com baixo nível de satisfação? Acredito que esta questão é importante de ser investigada e pode ser impactante no resultado final.

Você criou novas variáveis a partir dos atributos existentes no conjunto de dados?

O conjunto de dados estava bem consistente, as alterações realizadas foram para adaptar as informações para análise. Salary e Sales são do tipo factor, para elas criei duas novas variaveis, Salary_le e Sales_le para representa-las numericamente. É uma especíe de versão LabelEncoder de cada uma delas.

Foi criada a variável satisfied, do tipo factor com 3 níveis: SIM, NAO e REGULAR. O objetivo desse campo é facilitar na visualização das faixas de satisfação dos colaboradores. As faixas definidas para este projeto sem qualquer compromisso com valores padrões de um departamento de recursos humanos.

Dos atributos investigados, distribuições incomuns foram encontradas? Você aplicou operações nos dados para limpá-los, ajustá-los ou mudar a forma dos dados? Se sim, por quê?

Pesquisei variaveis NA, mas o grupo não tinha nenhuma. Variáveis sem conteúdo não foram pesquisadas porque na importação do arquivo eu atribui por padrão o valor NA para elas (na.strings=c(“”,“NA”)), então, automaticamente ao pesquisar por NA, eu já estava pesquisando pelas vazias.

Em alguns gráficos, transformei a variável left em factor para auxiliar o agrupamento dos dados em 0 e 1, e não na média destes dois números.

Observando o sumário das variáveis, os dados são consistentes e sem outliers, portanto não foi necessário manipular o conteúdo.

A variável salary, cujo conteúdo é a faixa do salário (alto, médio, baixo), seria uma ótima candidata a ter a operação log10 aplicada a seu conteúdo caso ele fosse o valor monetário do salário.

Seção de Gráficos Bivariados

Agora que já conhecemos um poucos as variáveis do conjunto de dados, vamos verificar como elas se relacionam. Nesta seção tentaremos responder as perguntas descritas no ínicio do trabalho.

Os colaboradores que saíram recebiam baixo salário?

Entre as pessoas que sairam temos todas as faixas de salário, o volume de pessoas com salário alto é menor e não está presente em todos os departamentos. Mas o gráfico já é suficiente para responder a pergunta, as pessoas que saíram recebiam, em sua maioria, um salário baixo ou médio.

Investigando um pouco mais o departamento, vamos ver a proporção de pessoas que sairam de cada uma deles.

Departamento 0 1
accounting 73 27
hr 71 29
IT 78 22
management 86 14
marketing 76 24
product_mng 78 22
RandD 85 15
sales 76 24
support 75 25
technical 74 26

Os departamentos de gerencia (management) e pesquisa e desenvolvimento (RandD) tiveram a menor evasão de colaboradores. Os outros departamentos tiveram entre 22 e 29%. Abaixo podemos ver esta distribuição:

Quando comparados, as pessoas que deixaram a empresa obtiveram uma mediana maior, principalmente no departamento RandD. No departamento de marketing e hr, as pessoas trabalharam entre 150 e 250h mas com uma mediana menor.

Departamento Contratado Desligado
accounting 199.0373 207.0294
hr 199.2500 197.3070
IT 198.8868 213.8498
management 200.2338 207.2637
marketing 198.8885 200.9901
product_mng 197.7656 207.7879
RandD 198.9520 210.9752
sales 199.5717 205.0414
support 199.1410 205.6360
technical 198.4711 214.1836

Com exceção do departamento de recursos humanos (hr), os colaboradores que se desligaram da empresa trabalharam em média mais do que os dos outros departamentos, atingindo uma média mensal superior a 200 horas. Foram realçados em vermelho os casos em que o grupo de desligados trabalhou por mais horas.

Sabemos que os colaboradores que se desligaram trabalharam por mais horas, será que eles conseguiram ficar por muitos anos na empresa?

Este gráfico trás uma informação interessante, de maneira geral as pessoas não saem da empresa no primeiro ano de trabalho. Os que saem após esse período, são os que trabalharam em média mais tempo por mês.O grupo de maior volume é formado por colaboradores que atuam na empresa a mais de 7 anos.

Outro ponto é que as pessoas que deixam a empresa não chegaram a completar 5 anos de trabalho. Em compração, os que permanecem na empresa chegaram a trabalhar por 10 anos.

Nós vemos uma insatisfação nos colaboradores que deixam a empresa no 3º ou 4º anos. Aparentemente se você passa por essa fase, o nível de satisfação cresce, ficando acima de 0.75, mas mesmo assim, os colaboradores saem entre o 5º e 6º, e nunca atingem o 7º ano. O ideal para este caso é que tivéssemos um histórico dos níveis de satisfação destas pessoas, ano após ano, assim conseguiríamos projetar a partir de qual ano a insatisfação tende a aumentar ou diminuir.

será que há uma variação similar na nota de avaliação recebida por este colaborador durante os anos trabalhados? Para descobrir isso, vamos ver a nota de avaliação por ano trabalhado:

O 3º ano parece um pouco crítico, não? Vimos no gráfico anterior que muitos dos que saíram demonstraram um nível de satisfação baixo, e neste gráfico percebemos que no 3º a maioria dos desligados receberam uma nota baixa na avaliação. Pode ser motivado por uma avaliação mais rigorosa da empresa após de 3 anos de trabalho ou pode existir uma política específica para este período.

Do 4º ano em diante os desligados receberam em sua maioria uma boa nota na avaliação, em geral acima de 0.8.

Ter mais tempo de empresa não significa que o salário será melhor. Do sexto para o 10º ano a faixa salarial que prevalece é a média, mas como os que saíram não chegaram a completar 7 anos de trabalho, não é possível verificar se isso se repetiria para eles.

Mesmo tendo sofrido acidente de trabalho, os colaboradores permanecem na empresa.

Vamos a outra questão: Quem tem mais projetos trabalha mais?

Sim. Na média, quem teve mais projetos trabalhou mais horas mensais. Faz bastante sentido que seja assim, mais carga de trabalho, mais tempo necessário para resolve-la.

Agora que já temos uma impresssão sobre o conjunto de dados, vamos, através do cálculo da correlação entre as variáveis, verificar se os valores obtidos nos ajudam a aprofundar a exploração das variáveis.

Correlação entre todas as variáveis do conjunto de dados hr:

Correlação entre as variáveis do subconjunto de dados dos colaboradores desligados.

Quando calculada a correlação só para os dados dos colaboradores desligados, a correlação entre as variáveis fica mais forte.

Valores de correlação para o conjunto hr:

##                       satisfaction_level last_evaluation number_project
## satisfaction_level            1.00000000     0.105021214   -0.142969586
## last_evaluation               0.10502121     1.000000000    0.349332589
## number_project               -0.14296959     0.349332589    1.000000000
## average_montly_hours         -0.02004811     0.339741800    0.417210634
## time_spend_company           -0.10086607     0.131590722    0.196785891
## Work_accident                 0.05869724    -0.007104289   -0.004740548
## left                         -0.38837498     0.006567120    0.023787185
## promotion_last_5years         0.02560519    -0.008683768   -0.006063958
##                       average_montly_hours time_spend_company
## satisfaction_level            -0.020048113       -0.100866073
## last_evaluation                0.339741800        0.131590722
## number_project                 0.417210634        0.196785891
## average_montly_hours           1.000000000        0.127754910
## time_spend_company             0.127754910        1.000000000
## Work_accident                 -0.010142888        0.002120418
## left                           0.071287179        0.144822175
## promotion_last_5years         -0.003544414        0.067432925
##                       Work_accident        left promotion_last_5years
## satisfaction_level      0.058697241 -0.38837498           0.025605186
## last_evaluation        -0.007104289  0.00656712          -0.008683768
## number_project         -0.004740548  0.02378719          -0.006063958
## average_montly_hours   -0.010142888  0.07128718          -0.003544414
## time_spend_company      0.002120418  0.14482217           0.067432925
## Work_accident           1.000000000 -0.15462163           0.039245435
## left                   -0.154621634  1.00000000          -0.061788107
## promotion_last_5years   0.039245435 -0.06178811           1.000000000
# Imprime a matriz com todos os gráficos em um arquivo svg. Retire o eval=FALSE para executar esta célula.
jpeg(filename = "gg.jpg")
print(g)
dev.off()
ggpair

ggpair

Para o contexto, a correlação entre left e satisfaction_level é a mais forte, mesmo não sendo tão forte de maneira geral.

with(hr, cor.test(left, satisfaction_level, method = 'pearson'))
## 
##  Pearson's product-moment correlation
## 
## data:  left and satisfaction_level
## t = -51.613, df = 14997, p-value < 2.2e-16
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.4018809 -0.3747001
## sample estimates:
##       cor 
## -0.388375

Análise Bivariada

Discuta sobre alguns dos relacionamentos observados nesta parte da investigação. Como os atributos de interesse variaram no conjunto de dados?

A variável left e os anos de trabalho de na empresa variam com o passar do tempo. O 3º ano parece ser o mais crítico, onde são registrados níveis de satisfação baixos, nos anos seguintes há um aumento e não foi registrada nenhuma saída após o colaborador completar 7 anos de casa.

As notas recebidas na avaliação também variam com o passar do tempo. No terceiro ano é registrado o maior volume de notas baixas entre os que deixaram a empresa, e os outros com mais tempo de trabalho, receberam boas notas em suas avaliações.

Boa parte dos que tiveram acidente de trabalho durante sua jornada permaneceram na empresa, há uma correlação muito fraca entre essas variáveis de -0.1546.

A medida que o número de projetos aumenta, também aumenta o média de horas trabalhadas por mês. E essa correlação é a mais forte do grupo sendo 0.4172.

Trabalhar por anos na empresa não está relacionado a um aumento da faixa de salário. Para aprofundar esta análise seria necessário saber o valor do salário recebido porque pode ter havido um aumento no valor, sem que isso significasse uma troca na faixa salarial (Baixo, Médio e Alto).

Você observou algum relacionamento interessante entre os outros atributos (os que não são de interesse)?

O relacionamento mais forte foi encontrado entre as variáveis número de projetos e média de horas trabalhadas. Não é claro se o total de projetos trabalhados corresponde a um período, por exemplo, são os projetos trabalhados no mês, no ano, desde a contratação? Supondo que seja mensal, faria todo sentido dizer que quem executou mais projetos, consequentemente pode ter tido que trabalhar mais horas no mês. Saber o nível de complexidade do projeto nos auxiliaria na interpretação da relação da quantidade de projetos e o tempo necessário para executá-lo.

Qual foi o relacionamento mais forte encontrado?

No que interessa a esta análise, que é investigar o porque alguns colaboradores deixaram a empresa, a variável nível de satisfação é a que tem a correlação mais forte com left, indicador de desligamento. Obteve-se o valor de correlação igual a -0.388375, ou seja, 40% dos desligamentos poderiam ser explicados pelo nível de satisfação, mas isso não significa que seja a causa dele.

Seção de Gráficos Multivariados

Distribuição da carga de trabalho por departamento:

Porque os bons e satisfeitos estão nos deixando?

Para responder a esta pergunta, o primeiro passo é criar um dataset com os dados dos colaboradores que atendem aos determinados critérios: 1. Na última avaliação tiveram nota superior a 0.7; 2. Trabalharam na empresa por mais de 4 anos; 3. Trabalharam em mais de 5 projetos; 4. No mês, em média, trabalharam mais de 200 horas

## [1] 961

Foi criado o data.frame hr_func_bons com 961 registros.

Não é nada surpreendente que as pessoas tenham saído da empresa, elas trabalharam mais pela mesma faixa de salário. Claro que para uma análise mais efetiva destas variáveis, seria necessário saber, por exemplo, na faixa de altos salários se os valores são os mesmos, ou se os que trabalhavam mais recebiam uma quantia maior, mesmo sendo caracterizado como a mesma faixa.

Vamos fazer a mesma análise só que observando o total de projetos x horas trabalhadas.

No comparativo entre os permanecem na empresa e os que saíram é possível ver que mesmo entre os melhores os que saíram trabalhavam mais e exceto pelos departamentos de product_mng e sales, trabalharam por salários baixos e médianos.

Bem, esse gráfico nos leva às seguintes observações: 1. Nesta perspectiva os desligados continuam trabalhando por mais horas que os contratados; 2. As horas mensais trabalhadas entre os contratados varia quase que de maneira imperceptível independente do número de projetos. As pessoas que trabalharam em 6 projetos, trabalharam entre 150 e 250 horas mensais da mesma forma que os que trabalharam em 2 projetos; 3. As pessoas que deixaram a empresa trabalharam mais horas por mês que os que ainda estão contratados. Para este grupo, a média de horas trabalhadas aumentou a medida que o número de projetos aumentou; 4. Os demitidos foram os únicos que trabalharam em 6 projetos ou mais.

Será que é perceptível a insatisfação do colaborador?

O que eu quero saber é se é a percepção que o colaborador tem de sí, ou seja, seu nível de satisfação se relaciona de alguma forma com a forma como o empregador percebe o colaborador e atribui uma pontuação para isso através da avaliação.

Entre os que se desligaram da empresa, tem três grupos bem distintos: 1. Insatisfeitos, mas reconhecidos como bons pela empresa; Neste grupo nós temos uma associação claramente negativa entre estas duas variáveis. 2. Insatisfeitos e não reconhecidos, ou seja, obtiveram nota baixa na avaliação; 3. Satisfeitos e reconhecidos como bons colaboradores.

Receber uma nota ruim na avaliação não é um atributo comum entre os que saíram.

Excesso de trabalho, foi um fator negativo?

Muitíssimo interessante que entre os desligados a divisão dos insatisfeitos esteja bem clara. Nesta visão, fica evidente, mas sem explicar a causa, o desequilíbrio na hora trabalhada. Respondendo a questão inicial, os insatisfeitos viveram duas situações, a que trabalharam mais que a média e a que trabalharam bem menos que a média mensal para essa variável que são 200 horas mensais. A medida que as horas trabalhadas se aproximaram desta faixa de 200 a 250, a satisfação aumentou.

O mesmo gráfico impresso para o conjunto de dados dos “bons colaboradores” evidência como os que se desligaram trabalharam em média por mais horas em comparação com os que ainda trabalham na empresa, para esses os pontos no gráfico são mais dispersos.

Vamos imprimir esse mesmo gráfico para os colaboradores que registraram um rendimento inferior.

## [1] 3248

Neste grupo nós vemos que os que permaneceram na empresa tiveram uma tendência positiva na satisfação, mantendo-se entre 0.5 e 1. Os desligados estavam mais insatisfeitos, talvez porque não desenvolveram seu potencial máximo, ou não foram envolvidos em muitos projetos. Como estamos falando de comportamento humano, fica difícil inferir sobre a motivação real sem conhecer mais variáveis.

## [1] "Total de colaboradores medianos desligados:"
## [1] 1526
## [1] "Total de bons colaboradores desligados:"
## [1] 851
## Aggregation requires fun.aggregate: length used as default
Satisfacao Contratado Desligado
NAO 59 845
REGULAR 28 3
SIM 23 3

Mais uma vez confirmamos que a maior parte dos bons colaboradores desligados era composta por colaboradores insatisfeitos.

Aumentando o contexto vamos comparar o total por faixa tanto para os desligados, quanto para os contratados.

table(hr$satisfied)
## 
##     NAO REGULAR     SIM 
##    3124    5577    6298
by(hr$left==1, hr$satisfied, summary)
## hr$satisfied: NAO
##    Mode   FALSE    TRUE    NA's 
## logical    1389    1735       0 
## -------------------------------------------------------- 
## hr$satisfied: REGULAR
##    Mode   FALSE    TRUE    NA's 
## logical    4674     903       0 
## -------------------------------------------------------- 
## hr$satisfied: SIM
##    Mode   FALSE    TRUE    NA's 
## logical    5365     933       0

A medida que diminui a faixa de satisfação, nós percebemos um aumento no total de desligados e uma diminuição dos contratados.

Já exploramos e tiramos algumas conclusões sobre o relacionamento das variáveis do conjunto de dados, agora vamos criar um modelo linear tendo como variável focal left.

m1 <- lm(left ~ satisfaction_level, data = hr)
m2 <- update(m1, ~ . + time_spend_company)
m3 <- update(m2, ~ . + average_montly_hours)
m4 <- update(m3, ~ . + number_project)
mtable(m1, m2, m3, m4)
## 
## Calls:
## m1: lm(formula = left ~ satisfaction_level, data = hr)
## m2: lm(formula = left ~ satisfaction_level + time_spend_company, 
##     data = hr)
## m3: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours, data = hr)
## m4: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours + number_project, data = hr)
## 
## ====================================================================
##                            m1         m2         m3         m4      
## --------------------------------------------------------------------
##   (Intercept)            0.646***   0.526***   0.445***   0.501***  
##                         (0.009)    (0.012)    (0.017)    (0.018)    
##   satisfaction_level    -0.665***  -0.647***  -0.646***  -0.665***  
##                         (0.013)    (0.013)    (0.013)    (0.013)    
##   time_spend_company                0.031***   0.029***   0.033***  
##                                    (0.002)    (0.002)    (0.002)    
##   average_montly_hours                         0.000***   0.001***  
##                                               (0.000)    (0.000)    
##   number_project                                         -0.031***  
##                                                          (0.003)    
## --------------------------------------------------------------------
##   R-squared                  0.2        0.2        0.2        0.2   
##   adj. R-squared             0.2        0.2        0.2        0.2   
##   sigma                      0.4        0.4        0.4        0.4   
##   F                       2663.9     1450.7      985.3      773.5   
##   p                          0.0        0.0        0.0        0.0   
##   Log-likelihood         -7254.4    -7154.2    -7131.3    -7073.6   
##   Deviance                2310.4     2279.7     2272.8     2255.4   
##   AIC                    14514.8    14316.3    14272.6    14159.3   
##   BIC                    14537.7    14346.8    14310.7    14205.0   
##   N                      14999      14999      14999      14999     
## ====================================================================

As variáveis satisfaction_level, time_spend_company, average_montly_hours e number_project obtiveram o mesmo r² de 0.2. 20% é um resultado fraco e abaixo da minha expectativa.

Neste ponto, sei que o nível de satisfação pode estar relacionado com o desligamento do colaborador, por isso vou criar um outro modelo em que esta variável seja o ponto focal para as outras.

m1 <- lm(satisfaction_level ~ average_montly_hours, data = hr)
m2 <- update(m1, ~ . + time_spend_company)
m3 <- update(m3, ~ . + number_project)
m4 <- update(m4, ~ . + promotion_last_5years)
mtable(m1, m2, m3, m4)
## 
## Calls:
## m1: lm(formula = satisfaction_level ~ average_montly_hours, data = hr)
## m2: lm(formula = satisfaction_level ~ average_montly_hours + time_spend_company, 
##     data = hr)
## m3: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours + number_project, data = hr)
## m4: lm(formula = left ~ satisfaction_level + time_spend_company + 
##     average_montly_hours + number_project + promotion_last_5years, 
##     data = hr)
## 
## =====================================================================
##                             m1         m2         m3         m4      
## ---------------------------------------------------------------------
##   (Intercept)             0.633***   0.680***   0.501***   0.500***  
##                          (0.008)    (0.009)    (0.018)    (0.018)    
##   average_montly_hours   -0.000*    -0.000      0.001***   0.001***  
##                          (0.000)    (0.000)    (0.000)    (0.000)    
##   time_spend_company                -0.017***   0.033***   0.034***  
##                                     (0.001)    (0.002)    (0.002)    
##   satisfaction_level                           -0.665***  -0.662***  
##                                                (0.013)    (0.013)    
##   number_project                               -0.031***  -0.031***  
##                                                (0.003)    (0.003)    
##   promotion_last_5years                                   -0.177***  
##                                                           (0.022)    
## ---------------------------------------------------------------------
##   R-squared                   0.0        0.0        0.2        0.2   
##   adj. R-squared              0.0        0.0        0.2        0.2   
##   sigma                       0.2        0.2        0.4        0.4   
##   F                           6.0       77.5      773.5      634.5   
##   p                           0.0        0.0        0.0        0.0   
##   Log-likelihood           -403.7     -329.7    -7073.6    -7041.2   
##   Deviance                  926.8      917.7     2255.4     2245.6   
##   AIC                       813.5      667.3    14159.3    14096.3   
##   BIC                       836.3      697.8    14205.0    14149.6   
##   N                       14999      14999      14999      14999     
## =====================================================================

20% do nível de satisfação pode ser explicado pelos números de projetos e promoções nos últimos 5 anos. Este relacionamento não implica causalidade.

Análise Multivariada

Discuta sobre os relacionamentos observados nesta parte da investigação. Quais atributos que fortaleceram os demais na observação das variáveis de interesse?

Quando o nível de satisfação de todo o grupo é analisado fica evidente uma distribuição bem diferente entre os que permanecem na empresa e os que saem. Os colaboradores que ficaram tem uma satisfação de regular a satisfeito, com um volume pequeno de colaboradores insatisfeitos. Entre os que saíram o grupo de insatisfeitos é o maior, demonstrando a correlação observada entre elas, mas não é possível afirmar que a insatisfação seja a causa de uma demissão por exemplo.

As horas mensais trabalhadas também desempenharam um papel importante no grupo dos demitidos, sendo comum encontrar as informações polarizadas em muito ou pouco trabalho.

Interações surpreendentes e/ou interessantes foram encontradas entre os atributos?

Foi uma surpresa descobrir que o trabalhar por menos horas que a média mensal foi um fator comum entre os desligados.

Modelos foram criados usando este conjunto de dados? Discuta sobre os pontos fortes e as limitações do seu modelo.

Sim, foram criados dois modelos, um para left e outro para satisfaction_level.

No 1º foi criado um modelo linear de regressão para verificar a relação entre left e as variáveis satisfaction_level, time_spend_company, average_montly_hours, number_project. As variáveis foram selecionadas com base no valor de correlação encontrada entre elas. O resultado recebido foi um pouco decepcionante porque o r² mesmo ajustado só consegue explicar 20% da variável dependente left. Outro valor a ser observado pelo modelo é que há uma alta significância entre as variáveis demonstrado pelo valor de p=0.

No 2º modelo o objetivo do modelo linear de regressão foi relacionar o nível de satisfação com a outras variáveis. Se não estar satisfeito pode estar relacionado, sem ser a causa, com a saída do colaborador, então o que poderia estar relacionado com a baixa satisfação dele? No modelo criado com total de anos trabalhados na empresa e a média mensal de horas trabalhadas tem o menor valor de r²=0, e as variáveis com o número de projetos trabalhados e a existência de promoção nos últimos anos demonstraram uma correlação baixa com a baixa satisfação dele sendo r²=0.2.


Gráficos Finais e Sumário

Primeiro Gráfico

Os colaboradores que mais trabalham são os mais bem pagos?

Para minha surpresa, não. Entre os que não fazem mais parte da empresa, os com alto salário trabalharam em menos projetos e obtiveram uma nota baixa na avaliação. Os com boa nota na avaliação (acima de 0.7) trabalharam em mais de 4 projetos. Os com nota inferior a 0.6 trabalharam em sua maioria em 2 projetos. Os contratados tem uma distribuição mais uniforme da satisfação e a maior parte trabalha de 3 a 5 projetos.

Segundo Gráfico

Mais uma vez conseguimos visualizar a distribuição das horas trabalhadas pelos que se desligaram da empresa. Eles estão polarizados em dois grupos bem definidos, hora trabalham acima da média ou bem abaixo. Nos departamentos Sales e Support, nós vemos, para os que ainda trabalham na empresa, uma incidência maior da faixa média de salário, mas no grupo dos desligados não é possível observar a prevalência desta faixa, a maioria deles recebia um baixo salário.

Como não temos o cargo ocupado por cada um deles, fica difícil traçar uma comparação entre eles. Nesta análise estamos supondo que eles ocupam cargos similares.

Terceiro Gráfico

Para complementar nossa análise vamos criar um novo modelo, usando o método rpart para construir uma árvore de decisão. Ao fim do processo teremos uma visualização boa dos dados.

Primeiro precisamos separar uma amostra de dados de teste e outra de treino. Estou definindo que ela tenha 80% do tamanho do original. Vou alterar o conteúdo de left, 0=Contratado e 1=Demitido.

hr$left <- factor(hr$left, labels=c("Contratado", "Desligado"))

# Cria amostra com 80% do tamanho de hr
sample_size <- floor(0.80 * nrow(hr))

# Set.seed para fins do resultado randomico
set.seed(123)

# Cria lista de índices
train_ind <- sample(seq_len(nrow(hr)), size = sample_size)

# Amostra para treino
train <- hr[train_ind, 1:8]

# Amostra para teste
test <- hr[-train_ind, 1:8 ]

O modelo vai se basear nas variáveis que já foram investigadas até agora e que consideramos importante durante a análise exploratória. O fator a ser predito será left, ou seja, se o colaborador permanecerá ou sairá, e o modelo se baseará no nível de satisfação, nota da última avaliação, média mensal de horas trabalhadas, número de projetos e anos trabalhados na empresa.

# Cria o modelo
fit <- rpart(left ~ satisfaction_level + last_evaluation + average_montly_hours + number_project + time_spend_company,
               data=train,
               method="class")

# Prediz o resultado
predicted_hr <- predict(fit, test)


auc(as.numeric(test$left) - 1, predicted_hr[, 2])
## Area under the curve: 0.9713

Uau! O classificador teve uma excelente pontuação de 0.97.

Agora que sabemos que temos um ótimo modelo, vamos plotar a árvore de decisões.

rpart.plot(fit, extra=104, box.palette="GnBu", branch.lty=3, shadow.col="gray", nn=TRUE)

De fato é um bom modelo, veja como ele espelha e reforça a análise realizada anteriormente, o colaborador com nível de satisfação baixo, muitos projetos, ou satisfeito e trabalhando por muitas horas mensais tem uma probabilidade maior de sair.


Reflexão

É sempre muito estimulante investigar uma base de dados buscando por fatores que possam auxiliar a uma organização a reter seus talentos e manter-se com um time de alto nível. A limitação desta análise é que ela é baseada em comportamento humano, e as poucas variáveis do conjunto de dados não são suficientes para entregar um resultado consistente que possa ser seguido pela organização. Seria muito produtivo para esta análise sabermos informações sobre os cargos, o nível de satisfação por ano de trabalho, o nível de complexidade dos projetos trabalhados e até mesmo o regime de contratação.

Com as informações disponíveis foi possível identificar o quanto a carga de trabalho é um fator determinante para saída do colaborador. Mesmo que ele tenha obtido uma boa nota na avaliação e esteja satisfeito, se ele estiver com uma carga excessiva de projeto e horas de trabalho ele provavelmente sairá. Mas se ele já está um pouco insatisfeito e a empresa atribuir a ele muitas horas ou menos horas do que a média trabalhada por todos, é possível que ele também saia.

Eu gostaria de ter mais informações sobre o valor monetário do salário. Entender se a remuneração pode ser um fator de insatisfação é dificil quando você não sabe o cargo e o salário real. O que pode ser percebido em relação ao reconhecimento do trabalhado é que foram registradas pouquíssimas promoções, inclusive a proporção de acidentes de trabalho é superior do que a de promoções. Entre os demitidos poucas pessoas tinham um alto salário.

Mesmo não tendo todas as variáveis que considero importante, foi divertido investigar as questões propostas no ínicio deste projeto, eu diria que criar o modelo para a árvore da decisão, e obter um AUC tão alto, foi um dos pontos mais compensadores do processo.

>>>>>>> origin/master